/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.medical.controlador.recepcion;

import com.ec.medical.controlador.ControladorBase;
import com.ec.medical.entidades.Cita;
import com.ec.medical.entidades.Cliente;
import com.ec.medical.entidades.Prestador;
import com.ec.medical.enumeracion.ActInaEnum;
import com.ec.medical.enumeracion.TipoCitaEnum;
import com.ec.medical.managers.recepcion.AgendarCitasSeleccionClienteDataManager;
import com.ec.medical.servicio.CitaServicioLocal;
import com.ec.medical.servicio.ClienteServicioLocal;
import com.ec.medical.servicio.PrestadorServicioLocal;
import com.ec.medical.servicio.TipoCitaServicioLocal;
import com.ec.medical.util.ParametrosBusquedaClienteUtil;
import java.sql.Time;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;

/**
 *
 * @author Administrador
 */
@ManagedBean
@RequestScoped
public class AgendarCitasSeleccionClienteControlador extends ControladorBase {

    private Logger LOG = Logger.getLogger(AgendarCitasSeleccionClienteControlador.class.getName());
    @ManagedProperty(value = "#{agendarCitasSeleccionClienteDataManager}")
    private AgendarCitasSeleccionClienteDataManager agendarCitasSeleccionClienteDataManager;
    @EJB
    private ClienteServicioLocal clienteServicio;
    @EJB
    private TipoCitaServicioLocal tipoCitaServicio;
    @EJB
    private CitaServicioLocal citaServicio;
    @EJB
    private PrestadorServicioLocal prestadorServicio;

    /**
     * Creates a new instance of AgendarCitasSeleccionClienteControlador
     */
    public AgendarCitasSeleccionClienteControlador() {
    }

    @Override
    protected void imprimirLogInfo(String mensaje) {
        LOG.info(mensaje);
    }

    @Override
    protected void imprimirLogError(String mensaje) {
        LOG.error(mensaje);
    }

    @Override
    public void iniciarDatos() {
        imprimirLogInfo("iniciarDatos");
        getAgendarCitasSeleccionClienteDataManager().setPrestador(prestadorServicio.obtenerPrestadorPorCodigo(getAgendarCitasSeleccionClienteDataManager().getPrestador()));
        getAgendarCitasSeleccionClienteDataManager().limpiarValores();
    }

    /**
     * consulta las mascotas de acuerdo a los parametros enviados
     */
    public void buscarCliente() {
        ParametrosBusquedaClienteUtil parametros = getAgendarCitasSeleccionClienteDataManager().getParametrosBusquedaClienteUtil();
        List<Cliente> clientes = clienteServicio.buscarClientePorParametros(parametros);
        getAgendarCitasSeleccionClienteDataManager().setClientesEncontrados(clientes);
    }

    public AgendarCitasSeleccionClienteDataManager getAgendarCitasSeleccionClienteDataManager() {
        return agendarCitasSeleccionClienteDataManager;
    }

    public void setAgendarCitasSeleccionClienteDataManager(AgendarCitasSeleccionClienteDataManager agendarCitasSeleccionClienteDataManager) {
        this.agendarCitasSeleccionClienteDataManager = agendarCitasSeleccionClienteDataManager;
    }

    public List<SelectItem> getHoras() {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (int i = 0; i < 24; i++) {
            lista.add(new SelectItem(i, i < 12 ? i + " am" : i + " pm"));
        }
        return lista;
    }

    public List<SelectItem> getMinutos() {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (int i = 0; i < 60; i++) {
            lista.add(new SelectItem(i, i + " min"));
        }
        return lista;
    }

    public void crearCita() {
        try {
            Cliente cliente = getAgendarCitasSeleccionClienteDataManager().getClienteSeleccionado();
            Prestador prestador = getAgendarCitasSeleccionClienteDataManager().getPrestador();
            Time HoraInicial = new Time(getAgendarCitasSeleccionClienteDataManager().getHoraSeleccionadaInicial(), getAgendarCitasSeleccionClienteDataManager().getMinutoSeleccionadoInicial(), 0);
            Time HoraFinal = new Time(getAgendarCitasSeleccionClienteDataManager().getHoraSeleccionadaFinal(), getAgendarCitasSeleccionClienteDataManager().getMinutoSeleccionadoFinal(), 0);
            Cita cita = new Cita();
            cita.setCliente(cliente);
            cita.setFechaCita(getAgendarCitasSeleccionClienteDataManager().getFechaSeleccionadaParaCita());
            cita.setHoraFin(HoraFinal);
            cita.setHoraInicio(HoraInicial);
            cita.setPrestador(prestador);
            cita.setTipoCita(tipoCitaServicio.obtenerPorIdentificador(TipoCitaEnum.NORMAL));
            citaServicio.crearCita(cita);
            getAgendarCitasSeleccionClienteDataManager().setDeshabilitarGuardar(true);
            infoMessage("Cita creada");
        } catch (Exception e) {
            errorMessage(e.getMessage());
        }
    }
    
     public List<Prestador> getPrestadores() {
        return prestadorServicio.obtenerTodosActivos(ActInaEnum.ACT);
    }
}
